{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Rosenberg Lancet:\n",
    "> Response to atezolizumab occurred in all TCGA subtypes but was significantly higher in the luminal cluster II subtype than in other subtypes, which showed an objective response rate of 34% (p=0·0017, figure 3G), compared with 10% for subtype I, 16% for subtype III, and 20% for subtype IV.\n",
    "\n",
    "Luminal := clusters 1, 2\n",
    "\n",
    "Basal := clusters 3,4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "%load_ext autoreload\n",
    "%autoreload 2\n",
    "\n",
    "import sys \n",
    "from os import getcwd, path\n",
    "sys.path.append(path.dirname(getcwd()))\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sb\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "from cohorts.functions import *\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from utils import data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from cohorts.plot import mann_whitney_plot\n",
    "from cohorts.plot import fishers_exact_plot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from utils.paper import *"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "inner join with genentech_tcga_subtypes: 25 to 20 rows\n",
      "inner join with genentech_tcga_subtypes: 25 to 20 rows\n",
      "{'dataframe_hash': -7937148208254620035,\n",
      " 'provenance_file_summary': {u'cohorts': u'0.4.0+3.gda968fb',\n",
      "                             u'isovar': u'0.0.6',\n",
      "                             u'mhctools': u'0.3.0',\n",
      "                             u'numpy': u'1.11.1',\n",
      "                             u'pandas': u'0.18.1',\n",
      "                             u'pyensembl': u'1.0.3',\n",
      "                             u'scipy': u'0.18.1',\n",
      "                             u'topiary': u'0.1.0',\n",
      "                             u'varcode': u'0.5.10'}}\n",
      "inner join with genentech_tcga_subtypes: 25 to 20 rows\n"
     ]
    }
   ],
   "source": [
    "cohort = data.init_cohort(join_with=[\"genentech_tcga_subtypes\"])\n",
    "df = cohort.as_dataframe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Benefit vs. Luminal or Basal Subtype"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "inner join with genentech_tcga_subtypes: 25 to 20 rows\n",
      "basal     False  True \n",
      "Response              \n",
      "DCB           4      4\n",
      "No DCB        5      7\n",
      "Fisher's Exact Test: OR: 1.4, p-value=1.0 (two-sided)\n",
      "{{{basal_plot}}}\n",
      "{{{basal_benefit:50%}}}\n",
      "{{{basal_no_benefit:58%}}}\n",
      "{{{basal_fishers:n=20, Fisher's Exact p=1.00}}}\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n5wAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f8718948e90>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fishers_exact_hyper_label_printer(cohort.plot_benefit(on = \"basal\"), label=\"basal\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def basal(row, cohort):\n",
    "    return row[\"basal\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "inner join with genentech_tcga_subtypes: 25 to 20 rows\n",
      "# no condition 9\n",
      "# with condition 11\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "inner join with genentech_tcga_subtypes: 25 to 20 rows\n",
      "# no condition 9\n",
      "# with condition 11\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<lifelines.StatisticalResult: \n",
       "Results\n",
       "   df: 1\n",
       "   alpha: 0.95\n",
       "   t 0: -1\n",
       "   test: logrank\n",
       "   null distribution: chi squared\n",
       "\n",
       "   __ p-value ___|__ test statistic __|____ test result ____|__ is significant __\n",
       "         0.20435 |              1.611 |  Cannot Reject Null |       False       \n",
       ">"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZoAAAGOCAYAAACuQcXuAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XlclNXiBvDnFRFIltwwBNSrKBMqm+CKmaAZ0GIiZrmg\nWYm51M24anzCFY1sM40Csww1TbuhJqIpmImahJZmKgVugIi4zci+nd8f/JgrwsiQvLPg8/18+CTv\nnHnnGSoez8yZ90hCCAEiIiKZtNB3ACIiat5YNEREJCsWDRERyYpFQ0REsmLREBGRrFg0REQkK70U\nTV5eHpYsWYJx48bB3d0dCoUCly9frjNOpVIhPDwcAwYMgIeHB6ZMmYK//vqrzriysjJERUXBx8cH\nbm5uGDduHNLS0nTxVIiIqAF6KZqLFy9iz549sLGxgZeXFyRJqnfctGnTcOjQIURERGDVqlWoqKjA\npEmTkJeXV2vc/Pnz8d///hdvvPEGYmJi0KFDB0ydOhVnz57VxdMhIqJ7EXq2ZcsWoVAoRE5OTq3j\ne/fuFQqFQqSmpqqP3b59W/Tr108sXbpUfezMmTPC2dlZxMfHq49VVFSIkSNHiunTp8v/BIiI6J4M\n9j2a/fv3w9bWFt7e3upjlpaWGDZsGJKSktTHkpKSYGpqCn9/f/UxExMTBAYGIiUlBeXl5TrNTURE\ntRls0WRkZKBHjx51jjs5OSE3NxfFxcUAgMzMTDg4OMDMzKzOuPLycly6dEkneYmIqH4GWzS3bt2C\njY1NneM1x1QqFQBAqVTWO+7hhx9Wn4eIiPSnpb4D6FtJSQlOnTqFDh06wMTERN9xiIgMXmVlJfLz\n89G7d2+Ym5s3ON5gi8bGxgZKpbLO8Zpj1tbW6n/WtzS6ZiZTM7PR5NSpUxg/fvz9xiUieuBs3LgR\nXl5eDY4z2KJxcnLC4cOH6xzPzMyEnZ0dLCws1OP27duH0tLSWu/TZGRkwNTUFJ07d77n43To0AFA\n9Q/skUceuefY5Nk/AQB8P3m8Ec8EOLzBBwAwaEJKo+5HRGSIrly5gvHjx6t/fzbEYIvG19cX8fHx\nSEtLUzdmQUEBkpOT8cwzz9Qat2rVKiQmJmLUqFEAqqd1iYmJ8PHxgamp6T0fp+blskceeQQODg73\nHNvWrB0ANDjubu2qJ1+Nvh8RkSHT9u0GvRXNnj17AFS/dCWEwIEDB9C2bVu0bdsW3t7e8PPzg5ub\nG8LCwhAWFgYrKyvExsYCAF5++WX1eR599FEEBARg+fLlKC8vh4ODAzZt2oScnBx8+OGHenluRET0\nP3ormtdff119RQBJkrB48WIAgLe3N+Li4iBJEmJjYxEVFYVFixahrKwMHh4eWL9+PTp27FjrXO++\n+y4++ugjrFy5Erdv34ZCocDatWuhUCh0/ryIiKg2vRWNNpeHsba2RmRkJCIjI+85rlWrVpg7dy7m\nzp3bVPGIiKiJGOznaIiIqHlg0RARkaxYNEREJCsWDRERyYpFQ0REsmLREBGRrFg0REQGRKFQICsr\nq1k9JouGiMiAaNra3pgfk0VDRGRAhBDN7jFZNEREBuann37C8OHDMXDgQLz33nvq41lZWQgJCUH/\n/v0xcOBAvPXWWygoKFDfHhsbi8ceewyenp7w9/fHL7/8AgA4efIkxo0bB29vbwwZMgRLlixBRUWF\nzp6PwV69mYiosU58fhJZB3JkfQzHofZwC3WV9TH27duH+Ph4FBYWIiQkBN26dcOYMWMghEBoaCi8\nvb1x+/ZtzJ49G6tWrcL8+fNx/vx5fPPNN/j+++/Rvn17XL58GZWVlQCqr7L89ttvo0+fPsjNzcUr\nr7yCb775BpMmTZL1edRg0RARySAkJAQnT56s8/5HVVUVPDw88NVXX2m876uvvgorKytYWVkhJCQE\nCQkJGDNmDDp37qzeY6tNmzYICQlBdHQ0gOoyKS8vx99//42HH34YnTp1Up+vV69e6j936tQJY8eO\nxa+//sqiISJqLLdQV9lnG9r6+uuv6z2empqK1atX3/O+d27CaG9vj6tXrwIArl+/jsjISKSlpaGo\nqAiVlZXqXYQ7d+6Mt99+G6tWrUJmZiZ8fHwwd+5c2Nra4sKFC3j33Xdx6tQplJSUoLKyslb5yI3v\n0RARGZjc3Fz1n3NycmBrawsA+OCDDyBJEhISEpCWloYVK1bUeiM/MDAQ33zzDZKTk9XjAWDhwoXo\n1q0b9u7di7S0NLzxxhs6XXTAoiEi0iFHR0c8//zz9xyzdu1aqFQq5ObmYv369QgICAAAFBUVoXXr\n1mjdujXy8vKwdu1a9X3Onz+PX375BWVlZTA1NYWZmRlatKj+FV9YWAhLS0tYWFggMzMTmzZtku8J\n1oNFQ0SkQ3Z2dggMDNR4uyRJ8PPzw+jRo/Hcc89h2LBhGDNmDABg5syZOHXqFLy8vBAaGoqRI0eq\n71dWVoYPPvgAAwcOxJAhQ3Djxg28+eabAIC5c+fihx9+gKenJxYsWFDn8eX+HI0k9LFo24BkZ2fD\nz88PSUlJcHBwuOfYnS8kAgCe2uTfqMdIiu4KAPB77cI/iUhEZFAa83sT4IyGiIhkxqIhIiJZsWiI\niEhWLBoiIpIVi4aIiGTFoiEiIlnxEjQ6UqLKVi9z1hU7RTBcfFfo9DGJiO7GGY0O2CmCYW7d8Frz\nplSiykbu2a06fUwiovpwRqMDLr4rdD6z0PXsiYiahkKhwN69e+Ho6NhsHpMzGiIiA8KtnImISFbc\nypmIiGTHrZyJiAzU6eQw2RfBaLuaMzQ0FMeOHYMkSRBC1Pqnp6cnPv/8c4335VbOD7ji/GL1VZzl\noIv9yIlIfvcqkoZwK+cHmONQe2QdyJHt/MX5xcg6kMOiIfqH9LHCUw7NbStnFk0jyL0fuZwzJSLS\nrVdeeQVpaWn1rujy8vJCbGysxvvm5uaie/fuADRv5WxlZYV9+/Zh6dKl6vsFBgYiMDAQhYWFiIiI\nwAcffICoqCgsXLgQLi4u+Oijj2BhYYGvv/4aP/74YxM/Y81YNEREMlizZs0/vu/atWvh6uqKwsJC\nrF+/Hi+99BKA6q2cra2tNW7lnJeXB09PT/VWzjWryerbyrldu3b39wQbgavOiIgMCLdyboYauyWp\nnP7pVtH14fbRRCQXbuVMREQGhUVDRESyYtEQEZGsWDRERCQrFg0REcmKRUNERLJi0RARkaxYNERE\nJCsWDRERyYpFQ0REsmLREBGRrFg0REQkKxYNERHJikVDRESyYtEQEZGsWDRERCQrFg0REcmKRUNE\nRLJqqe8A93Ls2DFER0fjzJkzKCkpQdeuXTF+/HgEBQWpx6hUKkRFRSEpKQmlpaVwd3fH/Pnz0bNn\nTz0mNwwlqmz1ls5NxU4RDBffFU16TiJq3gx2RpOeno6XXnoJFRUVWLp0KT799FP06dMH4eHh2Lx5\ns3rctGnTcOjQIURERGDVqlWoqKjApEmTkJeXp8f0+menCIa5dcN7eTdGiSobuWe3Nuk5iaj5M9gZ\nTUJCAqqqqhATEwNzc3MAwMCBA5Geno5t27Zh3Lhx2LdvH37//XfExcXB29sbAODu7g4/Pz988cUX\nCA8P1+dT0CsX3xVNPvNo6tkRET0YDHZGU15eDlNTU3XJ1LC0tIQQAgCQnJwMW1tbdcnU3D5s2DAk\nJSXpNC8REdXPYItm9OjREEJg6dKluHr1Km7fvo0tW7bgl19+weTJkwEAmZmZ6NGjR537Ojk5ITc3\nF8XFxTpOTUREdzPYl8569OiBuLg4zJw5Exs2bAAAmJqaYtGiRfD39wcA3Lp1Cw4Odd+HsLGxAVC9\nUMDCwkJ3oYmIqA6DLZqLFy9i9uzZ6NmzJxYvXgwzMzMkJSVhwYIFMDMzw1NPPaXviEREpAWDLZoP\nPvgApqam+Oyzz9CyZXXMAQMG4ObNm4iMjMRTTz0FGxsbKJXKOvetOWZtba3TzEREVJfBvkfz999/\nw9nZWV0yNVxdXXHr1i1cv34dTk5OyMjIqHPfzMxM2NnZ8WUzIiIDYLBF0759e6Snp6OioqLW8RMn\nTsDMzAw2Njbw9fVFXl4e0tLS1LcXFBQgOTkZfn5+uo5MRET1MNiXziZMmIA33ngD06ZNw4svvghz\nc3MkJSVh165dmDx5Mlq2bAk/Pz+4ubkhLCwMYWFhsLKyQmxsLADg5Zdf1vMzICIiwICLZuTIkYiN\njcWaNWvwzjvvoLS0FJ07d8aCBQvw/PPPAwAkSUJsbCyioqKwaNEilJWVwcPDA+vXr0fHjh31/AyI\niAgw4KIBgCFDhmDIkCH3HGNtbY3IyEhERkbqKBURETWGQRfNg6g4vxg7X0jUd4z6Kao/AGuw+QyY\n41B7uIW66jsGkV4Y7GKAB5HjUHtYdOBKueamOL8YWQdy9B2DSG84ozEgbqGuBv233qTo6hL0W+Cv\n5yTGhTNAetBxRkNERLJi0RARkaxYNEREJCsWDRERyapRiwHy8vJw7do1CCHQoUMHfiiSiIga1GDR\nnDx5Elu2bMHBgwdx9erVWre1a9cOQ4YMwZgxY9C3b1/ZQhIRkfHSWDQnT57Ee++9h2PHjgGAevvk\nO127dg3btm3Dtm3b4OHhgXnz5sHV1XCX5xIRke5pLJqxY8dCkiQIIdC+fXt4enpCoVCgTZs2AICb\nN2/i7NmzOH78OK5du4bjx49j3LhxOH36tM7CExGR4dNYNC1atIC/vz/Gjh2Lfv36QZKkescJIZCa\nmootW7Zg9+7dsgUlIiLjpLFoEhMT0aVLlwZPIEkS+vfvj/79+2P27NlNGo6IiIyfxuXN2pRMU9yH\niIiat0Zf66y8vBwxMTE4cOAATExMMGLECEyZMgUtWvAjOUREVFejiyYqKgobNmxQf3/ixAkUFhby\nZTMiIqpXo6ch27Ztw8iRIxEfH48ffvgBwcHB2LZtmxzZiIioGdA4o1m8eDHefPNNWFpaqo9VVFSg\nqKgII0aMwKOPPgoACAwMREJCgvxJySCUqLKRFN1V3zH+MTtFMFx8V+g7BtEDReOM5rvvvsOTTz6J\nHTt2qI+1bNkS3bt3xzvvvIOZM2fijTfewOzZs+Hi4qKTsKRfdopgmFs76DvGP1aiykbu2a36jkH0\nwNE4o9mxYweWLFmC//znP/juu++wYMECdcnMmDED+/btA1B9GZp58+bpLDDpj4vvCqOeDRjzTIzI\nmGksmq5du2Lt2rVITEzEu+++i1GjRmHy5MmYMWMGfvzxR5w4cQKSJMHT0xNWVla6zExEREakwcUA\n/v7+SExMxPjx4/HVV18hICAAx44dw+OPP46hQ4eyZIiI6J4aLJqysjIIITBv3jx8//33sLOzw6xZ\nsxAaGoqcnBxdZCQiIiOmsWhu3LiB0NBQeHh4wMvLC2PHjoWpqSk2btyIyMhInDx5EoGBgfjss89Q\nXl6uy8xERGRENBbN8uXL8dNPP6F169Zo06YNTp48iTlz5gAARo8ejd27d+PZZ5/FqlWr8Mwzz+gs\nMBERGReNRZOSkoKIiAikpqbi8OHD+Prrr3HmzBlcv34dAGBtbY1FixZh8+bNaN26tc4CExGRcbnn\nezR3bg2gaZsAV1dXbN3KzyYQEVH9NC5vHjRoEBYvXoyPP/4YLVu2xI0bN+Ds7Ix27drVGauphIiI\niDQWTXh4OJRKJQ4dOgQhBHr16oX33ntPl9mIiKgZ0Fg0bdu2xRdffIGSkhJUVFTUuuYZERGRtjQW\nTVVVFVq0aAFzc3OtT1ZzHyIiohoaW+HJJ5/E1q1bUVJS0uBJSkpKsGXLFvj7+zdpOCIiMn4aZzSX\nLl1CREQEli9fjmHDhqFv375wdnZGmzZtAAA3b95Eeno6jh07hv3796O4uFhnoYmIyHhoLJo333wT\nsbGxKCgowK5du7Br1y6NJxFCwNLSEq+++qosIYmIyHhpLJpXX30VwcHB2Lx5M7Zu3YrLly/XO87O\nzg5jxozBCy+8gLZt28oWlIiIjJPGogGANm3aYPr06Zg+fTrOnTuHP/74A9euXQNQvQ9Nnz590L17\nd50EJSIi43TPorlTt27d0K1bNzmzEBFRM8S1yEREJCutZzRE9M8V5xdj5wuJDY5zHGoPt1BXHSQi\n0h3OaIhk5jjUHhYdLBocV5xfjKwD3EyQmh/OaIhk5hbqqtUsRZsZD5Ex4oyGiIhkxaIhIiJZaXzp\nTNMHNDXp1KnTfYchIqLmR2PR+Pr6ar2hmSRJOH36dJOFIiKi5uOeiwGEELrKQUREzZTGonnuued0\nmYOIiJopjUWzfPlyXeYgIqJmip+joQdKiSobSdFdZTu/nSIYLr4rZDs/kTHSumjOnTuHb7/9FufP\nn6+z66YkSfj666+bPBxRU7JTBCP37FbZzl+iykbu2a0sGqK7aFU0p06dwsSJE+vd1lkIofXqNCJ9\ncvFdIWsJyDlTIjJmWhVNTEwMt2omIqJ/RKsrA/z222+QJAkLFy4EUP1S2Y4dO+Dr64uuXbsiPj5e\nzoxERGTEtCqaW7duAQCefvpp9bGePXtiyZIluHDhAtatWydLOCIiMn5aFY2ZmZn6n+bm5gCqFwdU\nVFQAAJKTk2WKBxw4cAATJkyAh4cH+vbtizFjxuDo0aPq21UqFcLDwzFgwAB4eHhgypQp+Ouvv2TL\nQ0REjaPVezTt2rVDUVERlEol7O3tce7cOUyaNAktW1bfXa7FAJs3b8bSpUsxceJEzJgxA1VVVThz\n5kytRQnTpk1Dbm4uIiIiYG1tjZiYGEyaNAnbt29Hx44dZclFRETa06poevbsiaysLKSnp+Pxxx9H\nZmYmrl+/DqC6ZHx8fJo8WE5ODpYvX465c+di4sSJ6uODBw9W/3nfvn34/fffERcXB29vbwCAu7s7\n/Pz88MUXXyA8PLzJcxERUeNo9dLZzJkz8cEHH8De3h7Tp0/H4MGD1ddBGzhwoCy/0L/77ju0aNEC\nzz//vMYx+/fvh62trbpkAMDS0hLDhg1DUlJSk2ciIqLG02pGo1AooFAo1N+vXbsWKpUKJiYmaN26\ntSzBjh8/jm7duiEhIQHR0dG4fPky7O3tERISgvHjxwMAMjIy0KNHjzr3dXJywvbt21FcXAwLi4a3\n0CUiIvloNaPx8/PDp59+itzcXPUxa2tr2UoGAK5evYoLFy5gxYoVmDZtGr788ksMHjwYS5Yswfr1\n6wFUr4azsbGpc9+aYyqVSrZ8RESkHa1mNDk5OVi9ejU+/fRTDBgwAGPGjMHw4cPRqlUr2YJVVVWh\nqKgIUVFRGD58OACgf//+yM7ORkxMTK33bYiIyHBpNaNp3749hBCoqqrCkSNHMGfOHAwZMgRLly6V\nbcOzNm3aAAAGDRpU6/jgwYNx/fp1XLt2DTY2NlAqlXXuW3PM2tpalmxERKQ9rYrm4MGDWLduHcaM\nGQNra2sIIaBUKrFx40YEBQXJsneNk5OTVmMyMjLqHM/MzISdnR3fnyEiMgBaFY0kSRgwYACWLl2K\nlJQUfPrppwgICICJiQmEEDh79myTBxsxYgQAICUlpdbxgwcP4pFHHkH79u3h6+uLvLw8pKWlqW8v\nKChAcnIy/Pz8mjwTERE1XqP3o7ly5QrS09ORnp6OyspKOTIBAIYOHYp+/fohIiICN27cgKOjIxIT\nE3H48GH1pmx+fn5wc3NDWFgYwsLCYGVlhdjYWADAyy+/LFs2IiLSnlZFk5+fj127dmHnzp04deqU\n+rgQAhYWFhg5cqQs4aKjo/Hhhx9i9erVUCqV6NatGz744AMEBAQAqJ5pxcbGIioqCosWLUJZWRk8\nPDywfv16XhWAiMhAaFU0Q4cOVX9As+af7u7uCAoKQkBAgGzLnFu3bo133nkH77zzjsYx1tbWiIyM\nRGRkpCwZiIjo/mhVNFVVVQCqV589++yzCAoKQrdu3WQNRkREzYNWRTN8+HCMHj0aQ4cOhYmJidyZ\niIioGdGqaFavXi13DiIiaqY0Fs3q1ashSRJmzJihVdHMnDmzSYMREVHzcM+iadGihbpoGtpzhkVD\nRET1uedLZzUrzO7+893k2viMiIiMn8aiiYuLq/fPREREjaGxaPr166f+c+/evfHQQw/pJBARETUv\nWq068/HxwZNPPonRo0fDy8tL7kxED6zi/GLsfCFRlnM7DrWHW6irLOcmuhetLqpZVFSE+Ph4TJw4\nESNHjsSaNWuQn58vdzaiB4rjUHtYdJDniuPF+cXIOpAjy7mJGqLVjKZPnz74448/AAAXL17Ehx9+\niJUrV8LHxwdjxozBsGHD+EFOovvkFuoq24xDrlkSkTa0KpqtW7ciKysLO3fuREJCAjIyMlBRUYED\nBw7gwIEDaNu2LQ4dOiR3ViKDV6LKRlJ0V33HqEtRDABIitb9Hk12imC4+K7Q+eOS4dDqpTMAcHR0\nxPTp07Fz505s27YNISEh6v1obty4IWdGIqNgpwiGubWDvmMYlBJVNnLPbtV3DNKzRu1HI4TAL7/8\ngp07d2Lv3r2y7kdDZGxcfFcY7N/ca14681vgr9PHNcjZHemcVkVz8uRJ7Ny5E4mJibh27RqA/32A\ns1OnTrJs5UxERM2DVkUzduxYSJKkLhczMzMMHz4cQUFBGDhwIK8MQEREGmn90pkQAr169UJQUBCe\nfvppWFlZyZmLiIiaCa2KJiQkBEFBQejZs6fceYiIqJlpcNVZWVkZ9u3bh9deew2ZmZm6yERERM1I\ngzOaVq1aQalUorCwEI6OjrrIREREzYhWn6MZNGgQAODs2bOyhiEiouZHq6KZNGkSbGxsMGfOHOza\ntQvnzp3D5cuXa30RERHVR6vFABMmTIAkSVAqlZgzZ06d2yVJwunTp5s8HBERGb9GLW8mIiJqLK2K\nhp/8JyKif0qrolm+fLncOYiIqJnS+urNRERE/4RWM5r58+ff83ZJkrBs2bImCURERM2LVkUTHx+v\n8cKZQggWDRERacRVZ0REJCutiiYpKanW95WVlcjKykJ0dDROnz6NmJgYWcIREZHx06po7O3t6xzr\n3Lkz3N3dMWDAAGzatAn9+vVr8nBERGT87mvVWWVlJSRJwsGDB5sqDxERNTP/eNVZWVkZjh8/jrKy\nMm6CRkREGt3XqrOaBQKPPfZY06YiIqJm475WnbVq1QqBgYEIDw9v0lBERNR8/KNVZ0B1yXTo0KHJ\nAxERUfPyj1edERERaUPrl85q5OXl4eeff4ZSqUT37t0xdOhQtGjBS6YREVH9NBbN1q1bkZiYiJ49\ne2LevHkAgF9++QUzZsxAUVGRelzv3r3x1VdfwdLSUv60RERkdDRORfbv348jR46gY8eO6mORkZEo\nLCyEEEL9derUKaxZs0YnYYmIjNWpdQ3vQqzNmMaMMxQaiyYzMxMA4OPjo/7+77//hiRJaN26Nf79\n73+jb9++EELUu1iAiIj+53TcmSYZ05hxhkLjS2c3btwAADg4OAAAjh07pr5t3LhxmDZtGgICAjBi\nxAhkZ2fLHJOIjFWJKhtJ0V31HUPNThEMF98V+o7xQNE4oyktLQXwv8/P/Pbbb+rbhgwZAgCws7Or\nNYaI6E52imCYWzvoO4ZaiSobuWe36jvGA0fjjMbOzg6XLl3CDz/8AF9fX/z0008Aqj8/4+7uDuB/\ns562bdvKn5SIjI6L7wqDmj0Y0szqQaKxaPr27YuLFy9i4cKFWLhwIYDqnTQHDRoEc3NzAMDx48cB\nAI888oj8SYnovhTnF2PnC4n6jqFfimIA0NvPQZvHbY7/jjQWzWuvvYY9e/agsLBQfczU1BSvv/66\n+vsdO3YAALy9vWWMSET3y3GoPbIO5Og7xgOhvKAc5YXl9d5WlFdU7/HGjgGALb7/rXPMZdKj6D3Z\nRav765LGonFwcMD333+PuLg4XLhwAXZ2dpgwYQIUCgUAoKCgAFZWVnj66acxcuRInQUmosZzC3WF\nW6irvmPoXVK0BQDAb4G/zh97i+9/MTY56L7HNGacobjnlQG6dOmCd955p97bLC0tERUVJUsoIiJq\nPnjtGCIikhWLhoiIZMWiISIiWbFoiIh0wGXSo00ypjHjDAWLhohIB7RZdqzt0mRDXMJ8L0ZVNFOn\nToVCocDKlStrHVepVAgPD8eAAQPg4eGBKVOm4K+//tJTSiIiupPG5c2XL19u1Ik6dep032HuZefO\nnUhPT4ckSXVumzZtGnJzcxEREQFra2vExMRg0qRJ2L59e61tDoiISPc0Fo2vr2+9v9TrI0kSTp+W\nb38EpVKJd999F2+//TbefPPNWrft27cPv//+O+Li4tRXKHB3d4efnx+++OILhIeHy5aLiIgads+X\nzu7c4KyhLzm9//77cHZ2RkBAQJ3b9u/fD1tb21qXwbG0tMSwYcO4Tw4RkQHQOKN57rnndJlDo7S0\nNOzYsUN9XbW7ZWRkoEePHnWOOzk5Yfv27SguLoaFhYXcMYmISAONRbN8+XJd5qhXeXk5Fi5ciKlT\np6JLly71jrl165Z6c7Y72djYAKheKMCiISLSH4NedbZmzRqUlpYiNDRU31GIiOgf0jijmT9/vtYn\nkSQJy5Yta5JANXJzcxETE4PIyEiUlpaitLRU/V5QWVkZbt++jdatW8PGxgZKpbLO/WuOWVtbN2ku\nIiJqHI1FEx8fr/WqMwBNXjRZWVkoKytDWFhYrcUGkiRh7dq1+PLLLxEfHw8nJyccPny4zv0zMzNh\nZ2fHl82IiPTsntsEaLuarDGFpC0XFxfExcXVOT5x4kQ8++yzCA4ORpcuXeDr64v4+HikpaXBy8sL\nQPVeOcnJyXjmmWeaPBcRETWOxqLR99JgS0tLjTt3durUSV0qfn5+cHNzQ1hYGMLCwmBlZYXY2FgA\nwMsvv6yzvEREVD+NRWNvb6/LHFqTJKnWDEqSJMTGxiIqKgqLFi1CWVkZPDw8sH79el4VgIjIANzz\npbO7qVQqXLhwAaWlpXVu0zT7aGpnzpypc8za2hqRkZGIjIzUSQYiItKeVkVTXl6OBQsWYPv27aiq\nqqpzu9yXoCEiIuOlVdF8+eWX+P777+XOQkREzZBWH9hMSEiAJEl49NHqzXYkScITTzwBMzMzdOnS\nBaNGjZIH/k5lAAAaKklEQVQ1JBERGS+tiiYrKwsA8Mknn6iPffLJJ1i5ciWys7Ph6+srTzoiIjJ6\nWhVNeXk5gOplxSYmJgCAkpISDBo0CJWVlbUKiIiI6E5avUdjY2ODGzduoKSkBDY2Nrh58yaio6Px\n0EMPAQAuXboka0gioqZSospGUnTXJjmXnSIYLr4rmuRczZlWMxpHR0cAQF5eHlxcXCCEwJo1a7By\n5UpIklTv1ZOJiAyNnSIY5tZN8/uqRJWN3LNbm+RczZ1WM5pBgwZBqVTi3LlzmDp1Kg4fPqxe5ixJ\nEmbMmCFrSCKipuDiu6LJZiBNNSt6EGhVNLNnz8bs2bPV32/YsAG7d++GiYkJhg8fjr59+8oWkIiI\njFuDRVNWVoYFCxZAkiSEhoaic+fO8PT0hKenpy7yERGRkWvwPZpWrVph165diI+Ph62trS4yERFR\nM6LVYoCaD2reuHFD1jBERNT8aFU0b731Flq1aoUFCxbg2rVrcmciIqJmRKvFAHPnzkWLFi2QkpKC\nIUOGoF27djAzM1PfLkkS9u3bJ1tIIiIyXloVTU5OjnoPGCFEnVmNHDtsEhFR86BV0XTq1EnuHERE\n1ExpVTTJycly5yAiomZKq8UARERE/5TWWznfuHEDn332GQ4dOgSlUolDhw4hNjYWZWVleO6552Bv\nby9nTiIiMlJaFc3Nmzfx/PPPIzs7G0II9Zv/2dnZ2Lp1K0xMTDB9+nRZgxIRkXHS6qWzTz/9FFlZ\nWRBC1Dr+1FNPQQiBgwcPyhKOiIiMn1ZFk5ycDEmS8OGHH9Y67uLiAuB/O3ASERHdTauiuXr1KgBg\n+PDhtY63bFn9ytvNmzebOBYRETUXWhVN69atAdS91tmvv/4KALCysmriWERE1FxoVTS9e/cGAERE\nRKiPxcTE4K233oIkSXB1dZUnHRERGT2tiiYkJET9pn/NirOPP/4YSqUSADBhwgT5EhIRkVHTqmge\ne+wx/Oc//4GJiQmEEOqvli1bYs6cORgyZIjcOYmIyEhp/YHNl156CQEBATh48CCuX7+Odu3awcfH\nB3Z2dnLmIyIiI6dV0axatQpBQUHo1KkTgoOD5c5ERETNiNYf2Bw+fDgmT56MnTt3oqysTO5cRETU\nTGh9Uc2qqiocPXoUYWFh8PHxweLFi3Hq1Ck5sxERUT3SDy40qvNqVTSxsbF49tln8dBDD0EIAZVK\nhU2bNiE4OBjPPPMM4uLiZAlHRER1/Z2yyKjOq/Wqs6ioKBw+fBgfffQRhg8fDlNTUwgh8Ndff2H5\n8uWyhCMiIuOn9aozADAzM4O/vz/c3NzQrVs3fPnll6ioqJArGxERNQNaF83NmzeRmJiIhIQE/Pbb\nb+rP0gCAhYWFbAGJiMi4aVU0r7zyCo4cOYLKykoAUBeMh4cHgoKCEBAQIF9CIiIDVaLKRlJ0V708\ntlyPq815r6sAwEzrc2pVNHfuN9OhQweMGjUKo0ePxr/+9S+tH4iIqDmxUwQj9+xWWR+jvOQWKkqV\n9d5WrLxY51hLMxuYmj/c5Oe9W8ntlgC6NThOnUurQS1bYtiwYQgKCsJjjz2GFi20XhVNRNQsufiu\ngIvvCr089s7lEp6aLxoeKNN5s7OzEflfP63Pq1XR/Pzzz2jbtq3WJyUiIqrRYNEIIXD8+HGkpKQg\nNzcXAGBnZwcfHx/4+fmpr+ZMRERUn3sWTVZWFmbNmoX09PQ6t3377bdwdnbGqlWr4OjoKFtAIiIy\nbhrfbCksLMTUqVORnp5ea2uAO7/Onj2Ll19+GYWFhbrMTERERkTjjGbjxo24dOkSAKB9+/YIDAyE\ng4MDgOo3gnbt2oX8/HxcunQJGzduxKuvvqqbxERED7gePguM6rwai2bv3r2QJAlPPPEE3n//fZia\nmta6/a233kJYWBh2796NvXv3smiIiHTEechCozqvxpfOzp8/DwCYN29enZIBAFNTU8ydO7fWWCIi\nortpLJrS0lIAQLt27TTeuea2mrFERER301g0NSXy888/a7xzzW33KiMiInqwaSwaT09PCCEwf/58\nbNy4EQUFBerbCgsLsXHjRrz99tuQJAmenp46CUtERMZH42KA8ePHY9euXSgoKMDSpUuxdOlSWFtb\nAwBUKhWA6g9zSpKECRMm6CYtEREZHY0zmr59+2LGjBm1PjejVCqhVCprbREwY8YMzmiIiEije14Z\nYNasWejevTs+++wz/P3337Vu69GjB1577TX4+/vLGpCIiIxbg9c6CwgIQEBAAPLz82td66xDhw6y\nhyMiIuOn9Q6bHTp0YLkQEVGjcWMZIiKSldYzGl3bvXs3fvjhB/z555+4efMm7Ozs8MQTT2DatGlo\n3bq1epxKpUJUVBSSkpJQWloKd3d3zJ8/Hz179tRjeiIiqmGwM5qvvvoKJiYmmDNnDr744gu8+OKL\n2LRpE6ZOnVpr3LRp03Do0CFERERg1apVqKiowKRJk5CXl6en5EREdCeDndF8/vnnaNOmjfp7b29v\nWFtbY/78+Th69Cj69++Pffv24ffff0dcXBy8vb0BAO7u7vDz88MXX3yB8PBwfcUnIqL/Z7AzmjtL\npkafPn0ghFDPVvbv3w9bW1t1yQCApaUlhg0bhqSkJJ1lJSIizQy2aOqTmpoKSZLg5OQEAMjIyECP\nHj3qjHNyckJubi6Ki4t1HZGIiO5iNEWTl5eHVatWYdCgQXBxcQEA3Lp1CzY2NnXG1hyruVQOERHp\nj1EUTVFREaZPnw5TU1MsW7ZM33GIiKgRDHYxQI3S0lJMmzYNOTk52LhxIzp27Ki+zcbGBkqlss59\nao7VXASUiIj0x6BnNBUVFZg1axZOnz6NNWvWqN+bqeHk5ISMjIw698vMzISdnR0sLCx0FZWIiDQw\n2KIRQmDOnDlITU1FdHQ0XF1d64zx9fVFXl4e0tLS1McKCgqQnJwMPz8/XcYlIiINDPals4ULF2LP\nnj2YPn06zM3NceLECfVtjzzyCDp27Ag/Pz+4ubkhLCwMYWFhsLKyQmxsLADg5Zdf1ld0IiK6g8EW\nzcGDByFJEj7//HN8/vnntW6bMWMGZs6cCUmSEBsbi6ioKCxatAhlZWXw8PDA+vXra72XQ0RE+mOw\nRZOcnKzVOGtra0RGRiIyMlLmRERE9E8Y7Hs0RETUPLBoiIhIViwaIiKSFYuGiIhkxaIhIiJZsWiI\niEhWLBoiIpIVi4aIiGTFoiEiIlmxaIiISFYsGiIikhWLhoiIZMWiISIiWbFoiIhIViwaIiKSFYuG\niIhkxaIhIiJZsWiIiEhWLBoiIpIVi4aIiGTFoiEiIlmxaIiISFYsGiIikhWLhoiIZMWiISIiWbFo\niIhIViwaIiKSFYuGiIhkxaIhIiJZsWiIiEhWLBoiIpIVi4aIiGTFoiEiIlmxaIiISFYsGiIikhWL\nhoiIZMWiISIiWbFoiIhIViwaIiKSFYuGiIhkxaIhIiJZsWiIiEhWLBoiIpIVi4aIiGTFoiEiIlmx\naIiISFYsGiIikhWLhoiIZMWiISIiWbFoiIhIViwaIiKSFYuGiIhkxaIhIiJZsWiIiEhWzaJorly5\ngtmzZ8PLywt9+/bFrFmzkJubq+9YRESEZlA0JSUlmDRpEs6fP4/33nsPK1aswIULFxASEoKSkhJ9\nxyMieuC11HeA+/Xtt98iJycHu3fvhqOjIwCgZ8+eGDlyJDZv3ozJkyfrNyAR0QPO6Gc0+/fvh5ub\nm7pkAMDBwQGenp5ISkrSYzIiIgKaQdFkZGSgR48edY47OTkhMzNTD4mIiOhORl80t27dgo2NTZ3j\nNjY2UKlUekhERER3Mvr3aO5XZWUlgOqVa0RE1LCa35c1vz8bYvRFY2NjA6VSWee4UqmEtbV1g/fP\nz88HAIwfP77JsxERNWf5+fno0qVLg+OMvmicnJyQkZFR53hGRga6d+/e4P179+6NjRs3okOHDjAx\nMZEjIhFRs1JZWYn8/Hz07t1bq/FGXzS+vr5YsWIFsrOz4eDgAADIzs7Gb7/9hrfeeqvB+5ubm8PL\ny0vumEREzYo2M5kakhBCyJhFdsXFxRg1ahTMzMzw+uuvAwA++eQTFBcXY/v27bCwsNBzQiKiB5vR\nFw1Q/cbUsmXLcPjwYQghMGjQIMyfPx+dOnXSdzQiogdesygaIiIyXEb/ORoiIjJsLBoiIpLVA1s0\nhrS1QF5eHpYsWYJx48bB3d0dCoUCly9frjNOpVIhPDwcAwYMgIeHB6ZMmYK//vqrzriysjJERUXB\nx8cHbm5uGDduHNLS0po89+7duzFjxgw8/vjjcHNzw5NPPokPP/wQhYWFBp07JSUFISEh8PHxQZ8+\nfTB06FC88cYbdS5ZZGi56zN16lQoFAqsXLnSoLOnpqZCoVDU+erXr59B565x4MABTJgwAR4eHujb\nty/GjBmDo0ePGmzuiRMn1vvzVigUeOWVV3SfWzyAiouLxYgRI8RTTz0lkpKSRFJSknjqqafEiBEj\nRHFxsc7zHD16VAwePFi8+uqrYurUqUKhUIicnJw648aNGyeGDh0qEhISxMGDB8WECRNE//79xZUr\nV2qNe/PNN4W3t7fYunWrOHLkiJg5c6ZwdXUVZ86cadLcY8eOFbNmzRI7duwQqamp4uuvvxZeXl7i\n+eefN+jcO3fuFO+9957Ys2eP+PXXX8X27dtFYGCg6Nu3r7h8+bLB5r7bDz/8IAYPHiwUCoX4+OOP\na91maNmPHj0qFAqF2LBhgzhx4oT669SpUwadWwghNm3aJHr16iXeffddcfjwYZGSkiLWrFkjfvrp\nJ4PNnZGRUevnfOLECfHVV18JhUIhNm3apPPcD2TRrFu3Tri4uIhLly6pj2VlZQkXFxfx1Vdf6S+Y\nEGLLli31Fs3evXuFQqEQqamp6mO3b98W/fr1E0uXLlUfO3PmjHB2dhbx8fHqYxUVFWLkyJFi+vTp\nTZr1xo0bdY7Fx8cLhUIhfvnlF4PNXZ9z584JZ2dn9b9/Q89969YtMXjwYJGQkCCcnZ1rFY0hZq8p\nmsOHD2scY4i5s7Ozhaurq4iLizOq3PWZP3++6NOnj1AqlTrP/UC+dGaMWwvs378ftra28Pb2Vh+z\ntLTEsGHDamVOSkqCqakp/P391cdMTEwQGBiIlJQUlJeXN1mmNm3a1DnWp08fCCGQl5dnsLnrU3Nh\n1pYtqz/DnJycbNC533//fTg7OyMgIKDObYb6MxcNLHA1xNzfffcdWrRogeeff96oct+tpKQEe/bs\nga+vr/rSXLrM/UAWjTFuLXCvzLm5uSguLgYAZGZmwsHBAWZmZnXGlZeX49KlS7LmTE1NhSRJcHJy\nMvjcVVVVKC8vx4ULF7BgwQLY2tqqf3FnZmYabO60tDTs2LEDERER9d5uyD/zsLAwuLi4oH///pgz\nZ06t90UNMffx48fRrVs3JCQkYMSIEejVqxeeeOIJbNy40aBz3+3HH39EUVERnnvuOb3kNvpL0PwT\nxri1wK1bt9SX2LlTzfNQqVSwsLCAUqms97k9/PDD6vPIJS8vD6tWrcKgQYPg4uJi8LmDg4Px559/\nAqi+nMa6devQtm1bg85dXl6OhQsXYurUqRovAWKI2a2srPDSSy+hX79+sLS0xOnTp/H5559j3Lhx\niI+PR9u2bQ0y99WrV3H16lWsWLECb775JhwdHbF7924sWbIEVVVVmDhxokHmvtv27dvRrl07DBky\nRH1Ml7kfyKKhpldUVITp06fD1NQUy5Yt03ccraxYsQIFBQXIzs7G2rVrMWXKFGzatMmgryixZs0a\nlJaWIjQ0VN9RGuXRRx/Fo48+qv7ey8sLXl5eCA4OxoYNGzB79mw9ptOsqqoKRUVFiIqKwvDhwwEA\n/fv3R3Z2NmJiYjBx4kQ9J2zY1atXceTIEYSEhKBFC/28iPVAvnR2v1sL6MO9MgNQ57a2tq53XM3f\nOmr+FtKUSktLMW3aNOTk5GDt2rXo2LGjUeTu1q0bXF1dERAQgHXr1qGoqAixsbEGmzs3NxcxMTF4\n/fXXUVpaitu3b6tn4GVlZbh9+zaqqqoMMnt9XFxc0LVrV5w8eRKAYf7Ma96HHDRoUK3jgwcPxvXr\n13Ht2jWDzH2n7du3QwiBUaNG1Tquy9wPZNHc79YC+qApc2ZmJuzs7NQXD3VyckJ2djZKS0trjcvI\nyICpqSk6d+7cpLkqKiowa9YsnD59GmvWrFG/N2Poue9mZWWFzp07q19vNsTcWVlZKCsrQ1hYGLy9\nveHt7Y1+/fpBkiSsXbsW/fr1w19//WWQ2bVhiLnv/u9Z0xhDy32n7du3Q6FQwNnZWW+5H8ii8fX1\nxYkTJ5Cdna0+VrO1gJ+fnx6Taebr64u8vLxaH5IqKChAcnJyrcy+vr4oLy9HYmKi+lhlZSUSExPh\n4+MDU1PTJsskhMCcOXOQmpqK6OhouLq6GkXu+ly7dg3nzp1T/09jiLldXFwQFxeHuLg4rF+/Xv0l\nhMCzzz6L9evXo0uXLgaZvT5//PEHzp8/D3d3d3UeQ8s9YsQIANUf8r3TwYMH8cgjj6B9+/YGmbvG\nqVOnkJGRUWsRwJ15dJXbZOHChQvv76kYH2dnZ+zatQt79uyBra0tzp8/jwULFsDCwgJLly6V/X+w\n+uzZsweZmZk4duwYTp06ha5du+Ly5cu4efMm7O3t8a9//QspKSmIj4+Hra0trly5gsWLF+P69etY\nsWIFLC0tAQAdOnTAuXPn8M033+Dhhx+GSqXC+++/jz/++APvv/8+2rdv32SZFy5ciO3bt+OVV16B\nk5MT8vLy1F+SJMHS0tIgc8+cORMXLlyASqVCfn4+UlJSsGDBApSVlWHZsmV4+OGHDTJ3q1atYG9v\nX+dr9erV8PX1xejRo2FqamqQ2cPCwpCeno7bt2/j6tWr+PHHH7Fw4UK0adMGkZGRMDc3N8jcXbt2\nxa+//orvvvsOlpaWUCqViI2NxY8//ojw8HAoFAqDzF0jNjYWp0+fxvLly+tsmaLT3Pf/MSDjlJub\nK2bNmiX69u0rPD09xcyZM+v9NL6uODs7C4VCUedr4sSJ6jFKpVK8/fbbol+/fsLd3V1MmTJFpKen\n1zlXaWmpePfdd8XgwYOFq6urGDt2rPj111+bPPOwYcPqzaxQKMSqVasMNveaNWvE6NGjhbe3t3B3\ndxdPPvmkWLBgQZ1//4aWWxOFQiFWrlxZ65ihZY+JiRHPPPOM8PLyEr169RKPP/64iIiIEPn5+Qad\nWwghCgoKxOLFi8XgwYNF7969xTPPPCMSEhIMPnd5ebkYMGDAPT9Uqavc3CaAiIhk9UC+R0NERLrD\noiEiIlmxaIiISFYsGiIikhWLhoiIZMWiISIiWbFoiIhIVrx6M1ETWb16NVavXq3+vmXLlnjooYdg\na2uLPn36IDg4GJ6ennpMSKQfnNEQNTFJkiBJEiorK3H79m1kZmYiPj4eL774IiIjI/Udj0jnWDRE\nMpgxYwbOnDmDlJQULFq0CNbW1pAkCRs2bEB0dLS+4xHpFIuGSEbt2rXD2LFjsWzZMtRc7WnNmjVQ\nqVTIzc3Fv//9b/j7+6Nfv37o3bs3BgwYgKlTp+Lw4cPqc3z99ddQKBRQKBS1rqALALNnz4ZCoUDv\n3r2Rl5cHANiyZQuCgoLQv39/9OnTB4899hheeuklbNu2TXdPnOgOLBoiHRg+fDi6du0KIQRKSkpw\n5MgRXL16FYmJibhw4QJu376NyspKKJVKHDp0CK+88gpSU1MBAEFBQWjdujUkScLmzZvV5ywsLMSB\nAwcgSRJ8fHzQsWNHJCYmIiIiAqdPn4ZKpUJFRQXy8/Nx5MgR7N+/X19Pnx5wLBoiHenWrZv6zzk5\nObC3t8dnn32GAwcO4OTJk/jtt9/w2WefAajeQjguLg4AYGlpiaCgIAghkJqaigsXLgAA9u3bp96M\nauzYsQCAY8eOAQAeeugh7N69G3/88Qf279+Pjz/+uNZ+8US6xFVnRDpSVVVV63sbGxucPXsWK1eu\nxMWLF1FcXKy+TQiB8+fPq7+fOHEiNmzYACEENm/ejHnz5iEhIQEA0L59ezz++OMAAAcHBwBAcXEx\noqOj0atXL3Tv3h2DBw9W7y9CpGuc0RDpyJ3F4eDggCVLlmDlypVIT09HSUmJerWaJEkAgJKSEvV4\nR0dH+Pr6QgiB+Ph45OXl4fDhw5AkCaNHj0aLFtX/K7/44ovw9/dHixYtsGPHDixfvhxTp07FoEGD\nEBsbq9snTPT/WDREOrBnzx5cvHgRAGBubo6BAwciMTERkiShVatW+Pbbb/Hnn38iLS0NQgh12dwp\nJCQEAKBSqfDWW2+hoqICkiRhzJgx6jGtWrXCRx99hKNHj+Kbb77BsmXL4O7ujrKyMnz88ce4evWq\nbp4w0R1YNEQyun79OjZt2oTw8HAA1Z+xmTZtGqysrGBiYgIhBFq0aAFLS0sUFhYiKipK47m8vb3h\n4uICIQR+/fVXSJIEb29vODo6qsf8+OOP2LhxI65cuQJnZ2eMHDkSPXv2BFD9ctyVK1fkfcJE9eB7\nNERNTAhR5yoBNS+JTZo0CaGhoQCAESNGYOvWrSguLkZAQACA6j3qa85Rn0mTJmHevHnqGU/NIoAa\nmZmZWLlyZZ37SZIEW1tbKBSK+35+RI3FGQ1RE7rzfZaWLVvCxsYGPXr0wKhRo7Bp0ybMnz9fPfbt\nt9/GCy+8gPbt2+Ohhx6Cr68v1q1bV+e9mjsFBgaiffv2EELA2toaI0aMqHX7wIED8fTTT6NLly5o\n3bo1WrZsCVtbWwQGBmL9+vVo1aqV7D8DortJQtNfnYjI4Fy7dg3+/v4oKCjA5MmTMXfuXH1HImoQ\nXzojMgInT55EWFgYrl69iuLiYlhaWmLKlCn6jkWkFb50RmQESkpKcOnSJVRWVqJ3796IiYmBra2t\nvmMRaYUvnRERkaw4oyEiIlmxaIiISFYsGiIikhWLhoiIZMWiISIiWf0fWf64JH0KwiMAAAAASUVO\nRK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f8716387c50>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\ndvX/AQDMEUur53vNAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f871897be10>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cohort.plot_survival(on=\"basal\", how=\"os\")\n",
    "cohort.plot_survival(on=\"basal\", how=\"pfs\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Benefit vs. Four TCGA Subtypes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import matplotlib.colors as colors\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import readline\n",
    "import rpy2.robjects as robjects\n",
    "from rpy2.robjects import FloatVector\n",
    "from rpy2.robjects.packages import importr\n",
    "\n",
    "stats = importr('stats')\n",
    "r = robjects.r"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/tavi/miniconda2/lib/python2.7/site-packages/ipykernel/__main__.py:2: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
      "  from ipykernel import kernelapp as app\n"
     ]
    }
   ],
   "source": [
    "sdf = df[[\"TCGA Subtype\", \"is_benefit\"]]\n",
    "sdf[\"num\"] = pd.Series(np.ones(len(sdf)))\n",
    "pvt = pd.pivot_table(data = sdf, \n",
    "               index = \"TCGA Subtype\",\n",
    "               columns = \"is_benefit\",\n",
    "               values = \"num\", aggfunc = np.sum, fill_value=0).reset_index(level=0)\n",
    "\n",
    "pvt.columns = [\"TCGA Subtype\", \"F\", \"T\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "contingency_table = pd.crosstab(df[\"TCGA Subtype\"], df[\"is_benefit\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "adf = pd.DataFrame(pvt.values, columns=[\"TCGA Subtype\", \"no benefit\", \"benefit\"])\n",
    "adf[\"Total Patients\"] = adf[\"benefit\"] + adf[\"no benefit\"]\n",
    "adf[\"Percent Benefit\"] = adf[\"benefit\"] / adf[\"Total Patients\"]\n",
    "\n",
    "adf[\"% \" + cohort.benefit_plot_name] = adf[\"Percent Benefit\"].apply(lambda x: \"%2.f\" % (100*x))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>TCGA Subtype</th>\n",
       "      <th>no benefit</th>\n",
       "      <th>benefit</th>\n",
       "      <th>Total Patients</th>\n",
       "      <th>Percent Benefit</th>\n",
       "      <th>% DCB</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>I</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>0.5</td>\n",
       "      <td>50</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>II</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>5</td>\n",
       "      <td>0.4</td>\n",
       "      <td>40</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>III</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>IV</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>7</td>\n",
       "      <td>0.571429</td>\n",
       "      <td>57</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  TCGA Subtype no benefit benefit Total Patients Percent Benefit % DCB\n",
       "0            I          2       2              4             0.5    50\n",
       "1           II          3       2              5             0.4    40\n",
       "2          III          4       0              4               0     0\n",
       "3           IV          3       4              7        0.571429    57"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "adf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING: change these if cohorts.styling is changed\n"
     ]
    }
   ],
   "source": [
    "print \"WARNING: change these if cohorts.styling is changed\"\n",
    "blue = colors.hex2color(\"#5a86ad\")\n",
    "red = colors.hex2color(\"#bb3f3f\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{{{subtype_patients}}}\n"
     ]
    },
    {
     "data": {
      "image/png": "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\ngg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f8713cfb1d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "f, ax = plt.subplots()\n",
    "\n",
    "#sb.set_color_codes(\"pastel\")\n",
    "sb.barplot(y = \"Total Patients\", x = \"TCGA Subtype\", data = adf, label = \"No \" + cohort.benefit_plot_name, color = red)\n",
    "\n",
    "#sb.set_color_codes(\"muted\")\n",
    "sb.barplot(y = \"benefit\", x = \"TCGA Subtype\", data = adf, label = cohort.benefit_plot_name, color = blue)\n",
    "          #palette = mcp)\n",
    "\n",
    "ax.legend(ncol=1, loc=\"upper left\")\n",
    "ax.set(ylabel=\"Patient Count\")\n",
    "ax.set(ylim=[0,8])\n",
    "\n",
    "percents = adf[\"% \" + cohort.benefit_plot_name].values\n",
    "\n",
    "for (p, percent) in zip(ax.patches[:4], percents):\n",
    "    height = p.get_height()\n",
    "    ax.text(p.get_x(), height+.2, \"  \" + percent + \"%\")\n",
    "\n",
    "hyper_figure_label_printer(\"subtype_patients\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "('data.name', array(['structure(c(2L, 3L, 4L, 3L, 2L, 2L, 0L, 4L), .Dim = c(4L, 2L))'], dtype=object))\n",
      "('alternative', array(['two.sided'], dtype=object))\n",
      "('method', array([\"Fisher's Exact Test for Count Data\"], dtype=object))\n",
      "('p.value', [0.3631817099309312])\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/tavi/miniconda2/lib/python2.7/site-packages/ipykernel/__main__.py:10: FutureWarning: The pandas.rpy module is deprecated and will be removed in a future version. We refer to external packages like rpy2. \n",
      "See here for a guide on how to port your code to rpy2: http://pandas.pydata.org/pandas-docs/stable/r_interface.html\n"
     ]
    }
   ],
   "source": [
    "a = list(contingency_table.values[:,0])\n",
    "b = list(contingency_table.values[:,1])\n",
    "\n",
    "v = a + b\n",
    "\n",
    "m = r.matrix(robjects.IntVector(v), ncol = 2)\n",
    "\n",
    "result = stats.fisher_test(m)\n",
    "\n",
    "import pandas.rpy.common as com\n",
    "pyresultdict = com.convert_robj(result)\n",
    "\n",
    "for k, v in  pyresultdict.items():\n",
    "    print(k, v)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from cohorts.rounding import float_str"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "n = len(sdf)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{{{four_clusters_fisher:n=20, Fisher's Exact p=0.36}}}\n"
     ]
    }
   ],
   "source": [
    "clusters_fisher_pvalue = pyresultdict[\"p.value\"][0]\n",
    "\n",
    "str_pvalue = float_str(clusters_fisher_pvalue)\n",
    "\n",
    "text = \"four_clusters_fisher:n=%d, Fisher's Exact p=%s\" % (n, str_pvalue)\n",
    "\n",
    "print \"{{{%s}}}\" % text"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.11"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
